package com.annotation.base;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

@TypeAnnotation(value="myClass",name="我的类")
public class MyClass {
	@MethodAnnotation(methodName="获取名字",methodValue="getName")
	public String getName() {
		return "您的名字为猪";
	}
	
	@SuppressWarnings("unused")
	public static void main(String[] args) throws Exception {
		Class<?> clazz = MyClass.class;
		
		//判断是否包含某个注解
		clazz.isAnnotationPresent(TypeAnnotation.class);
		//获取指定类型的注解
		TypeAnnotation typeAnnotation = clazz.getAnnotation(TypeAnnotation.class);
		//获取注解时指定的值
		String name = typeAnnotation.name();
		//获取类上所有的注解包含继承的
		Annotation[] annotations = clazz.getAnnotations();
		//获取类上所有的非继承的注解
		annotations = clazz.getDeclaredAnnotations();
		
		//获取指定的方法
		Method method = clazz.getDeclaredMethod("getName");
		//获取注解在方法上的注解
		MethodAnnotation methodAnnotation = method.getAnnotation(MethodAnnotation.class);
	}
}
